package com.xcw.test;

/**
 * @author bhx
 * @Class P3_
 * @date 2022/11/13 0:30
 * @Description TODO
 */

import java.util.Arrays;
import java.util.Scanner;

/**
 * 试题1、假设有N盏灯(N 为不大于5000 的正整数)，
 * 从1到 按顺序依次编号，初始时全部处于开启状态;有M个人(M 为不大于 N的正整数)也从1到M 依次编号。
 * 第一个人(1 号) 将灯全部关闭，第二个人(2 号) 将编号为2 的倍数的灯打开，
 * 第三个人(3 号)将编号为3 的倍数的灯做相反处理(即将打开的灯关闭，将关闭的灯打开) 。
 * 依照编号递增顺序，以后的人都和3 号一样，将凡是自己编号倍数的灯做相反处理。
 * 请问:当第M个人操作之后，哪几盏灯是关闭的，按从小到大输出其编号，其间用逗号间
 * 隔。
 * (1) 本题分值:20 分。
 * 2考核时间:36min。
 * (3) 考核形式:上机实操。
 * (4) 编程语言: C/C++、Python、Java 任选·种语言。
 * (5) 输入: 输入正整数和M N，以单个空格隔开。
 * (6) 输出: 顺次输出关闭的灯的编号，其间用逗号间隔。
 * (7) 样例输入:
 * 10 10
 * (8) 样例输出:
 * 1,4,9
 */
public class P3_11_9 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String nums = scanner.nextLine();
        String[] ints = nums.split(" ");
        int M = Integer.valueOf(ints[0]);
        int N = Integer.valueOf(ints[1]);
        System.out.println(M);
        System.out.println(N);
        int[] lamps = new int[N];
        dealLamps(lamps, M);
        System.out.println(Arrays.toString(lamps));
        System.out.println(getOpenLamps(lamps));
    }

    public static void dealLamps(int[] lamps, int nums){
        for (int i = 1; i < nums + 1; i++) {
            for (int j = 0; j < lamps.length; j++) {
                int index = j+1;
                if (index % i == 0){
                    lamps[j] =  switchLamp(lamps[j]);
                }
            }
        }
    }
    
    public static int switchLamp(int state){
        if (state == 1){
            return 0;
        }else {
            return 1;
        }
    }
    public static String getOpenLamps(int[] lamps){
        StringBuilder app = new StringBuilder();
        for (int i = 0; i < lamps.length; i++) {
            if (lamps[i] == 1){
                app.append(++i + ",");
            }
        }
        if (app.toString().length() > 0){
            return app.substring(0, app.toString().length() - 1);
        }
        return "";
    }
}
